package com.lwm.service;

import com.github.pagehelper.PageInfo;
import com.lwm.domain.MaterialCategory;
import com.lwm.domain.ResponseResult;

import java.util.List;

public interface MaterialCategoryService {

    /**
     * 新增物料分类
     *
     * @param materialCategory 物料分类
     * @return {@link ResponseResult}<{@link Object}>
     */
    ResponseResult<Object> save(MaterialCategory materialCategory);

    /**
     * 删除物料分类
     *
     * @param ids id组
     * @return {@link ResponseResult}<{@link Object}>
     */
    ResponseResult<Object> remove(List<Long> ids);

    /**
     * 数据处理
     * 对于分类编码进行处理
     * 如：TM1223 拼接上 - 和 雪花id => TM123-xx...
     *
     * @param ids id集合
     */
    void handlerData(List<Long> ids);

    /**
     * 重置父级id
     *
     * @param ids id集合
     */
    void resetParentId(List<Long> ids);

    /**
     * 编辑
     *
     * @param materialCategory 物料分类
     * @return {@link ResponseResult}<{@link Object}>
     */
    ResponseResult<Object> edit(MaterialCategory materialCategory);

    /**
     * 编辑批处理
     *
     * @param list 物料分类集合
     * @return {@link ResponseResult}<{@link Object}>
     */
    ResponseResult<Object> editBatch(List<MaterialCategory> list);

    /**
     * 分页
     *
     * @param page             当前页
     * @param size             数据量
     * @param materialCategory 物料分类
     * @return {@link ResponseResult}<{@link PageInfo}<{@link MaterialCategory}>>
     */
    ResponseResult<PageInfo<MaterialCategory>> page(Integer page, Integer size, MaterialCategory materialCategory);

    /**
     * 根据id获取
     *
     * @param id 分类id
     * @return {@link ResponseResult}<{@link MaterialCategory}>
     */
    ResponseResult<MaterialCategory> getById(Long id);

    /**
     * 获取对应id是否作为其他分类的父级而存在
     *
     * @param ids id集合
     * @return {@link ResponseResult}<{@link Object}>
     */
    ResponseResult<Object> getParentExist(List<Long> ids);
}
